<?php


namespace Part18_MemoMode\Code2;

/**
 * 发起人
 */
class Originator
{
    // 需要保存的属性，可能有多个
    private $state;

    public function setState($state)
    {
        $this->state = $state;
    }

    public function getState()
    {
        return $this->state;
    }

    // 创建备忘录，将当前需要保存的信息导入并实例化出一个memento对象
    public function createMemento()
    {
        return new Memento($this->getState());
    }

    /**
     * 恢复备忘录，将memento导入并将数据恢复
     * @param $memento Memento
     */
    public function setMemento($memento)
    {
        $this->state = $memento->getState();
    }

    // 显示数据
    public function show()
    {
        echo "state = {$this->getState()}\n\n";
    }
}